package com.mrcode.neptuneproject.common;

import lombok.Data;

/**
 * @Author YSH
 * @Date 2023/6/1 14:59
 * @Version 1.0
 */
@Data
public class Result<T> {
    private Integer code;
    private String msg;
    private T data;

    /**
     * 无参数的成功方法，只返回成功代码“200”
     *
     * @param <T> t
     * @return Result
     */
    public static <T> Result<T> success() {
        Result<T> result = new Result<>();
        result.setCode(ResultEnum.SUCCESS.getCode());
        return result;
    }

    /**
     * 有参数的成功方法，返回成功代码“200” 和 数据data
     *
     * @param data data
     * @param <T>  t
     * @return Result
     */
    public static <T> Result<T> success(T data) {
        Result<T> result = new Result<>();
        result.setCode(ResultEnum.SUCCESS.getCode());
        result.setData(data);
        return result;
    }

    /**
     * 失败的方法，返回自定义错误信息 和 错误代码“-1”
     *
     * @param msg error msg
     * @param <T> t
     * @return Result
     */
    public static <T> Result<T> error(String msg) {
        Result<T> result = new Result<>();
        result.setCode(ResultEnum.FAIL.getCode());
        result.setMsg(msg);
        return result;
    }

    /**
     * 失败的方法，返回自定义错误信息 和 自定义错误代码
     *
     * @param code error code
     * @param msg  error msg
     * @param <T>  t
     * @return Result
     */
    public static <T> Result<T> error(Integer code, String msg) {
        Result<T> result = new Result<>();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}
